package com.hopu.mapper;

import com.hopu.entity.MyDept;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * @Package: com.hopu.mapper
 * @ClassName: MyDeptMapper
 * @Author: xiaoBao
 * @CreateTime: 2020/10/29 18:32
 * @Description: 【部门信息持久层】
 */
public interface MyDeptMapper {
    /**
     * findAllPartInfo 【查询所有部门信息：1、实现查询所有部门信息；2、实现“添加员工”时在下拉框中显示所有部门名称（包括Id）。】
     * @return 将查询到的结果集返回给服务层。
     */
    @Select("SELECT * FROM mydept WHERE pflag = #{pflag}")
    List<MyDept> findAllPartInfo(int pflag);


    /**
     * findPart 【1、根据部门名称验证部门是否存在；2、根据点击的部门Id查询部门信息，实现修改弹窗数据回显。】
     * @param myDept 部门名称；
     * @return 将查询结果返回给服务层进行逻辑判断。
     */
    @Select("SELECT * FROM mydept WHERE pname = #{pname} OR pid = #{pid}")
    MyDept findPart(MyDept myDept);


    /**
     * addPart 【根据名称和备注添加一条部门信息】
     * @param myDept 部门名称 备注；
     * @return 将添加影响的行数返回给服务层。
     */
    @Insert("INSERT INTO mydept(pname,pflag,premark)VALUES(#{pname},0,#{premark})")
    Integer addPart(MyDept myDept);


    /**
     * updatePartById 【根据Id修改一条部门信息】
     * @param myDept 部门名称、备注、Id；
     * @return 将修改执行的影响行数返回给服务层。
     */
    @Update("UPDATE mydept SET pname = #{pname},premark = #{premark} WHERE pid = #{pid}")
    Integer updatePartById(MyDept myDept);


    /**
     * delPart【根据Id撤销一个部门（修改操作：软删除，不删除这条数据，只将需要撤销的部门flag值设为1）】
     * @param myDept 部门Id
     * @return 将执行结果影响的行数返回给服务层。
     */
    @Update("UPDATE mydept SET pflag = 1 WHERE pid = #{pid}")
    Integer delPart(MyDept myDept);


    /**
     * restorePart 【根据Id恢复一个部门（修改操作，将需要恢复的部门flag值设为0）】
     * @param myDept 部门Id；
     * @return 将执行结果影响的行数返回服务层。
     */
    @Update("UPDATE mydept SET pflag = 0 WHERE pid = #{pid}")
    Integer restorePart(MyDept myDept);
}
